'''
-The sieve of Eratosthenes is an algorithm used to find prime numbers, less than or equal to a given value.
-Illustration: https://upload.wikimedia.org/wikipedia/commons/b/b9/Sieve_of_Eratosthenes_animation.gif
'''
from __future__ import print_function

from math import sqrt


def SOE(n):
    check = round(sqrt(n))  # Need not check for multiples past the square root of n

    sieve = [False if i < 2 else True for i in range(n + 1)]  # Set every index to False except for index 0 and 1

    for i in range(2, check):
        if (sieve[i] == True):  # If i is a prime
            for j in range(i + i, n + 1, i):  # Step through the list in increments of i(the multiples of the prime)
                sieve[j] = False  # Sets every multiple of i to False

    for i in range(n + 1):
        if (sieve[i] == True):
            print(i, end=" ")
